# 使用 Alpine 3.22.0 作为基础镜像
FROM alpine:3.22.0

# 设置维护者信息
LABEL maintainer="your-email@example.com"
LABEL description="基于 Alpine 3.22.0 的自定义镜像"

# 更新包管理器并安装常用工具
RUN apk update && \
    apk add --no-cache \
    bash \
    curl \
    zip \
    wget \
    git \
    nano \
    htop \
    tzdata \
    ca-certificates \
    netcat-openbsd \
    sudo \
    mysql-client \
    python3 \
    py3-pip \
    dcron \
    dos2unix && \
    rm -rf /var/cache/apk/*

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 安装 ossutil（阿里云对象存储工具）
RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash

# 创建工作目录
WORKDIR /app

# 创建非 root 用户并添加 sudo 权限
RUN addgroup -g 1000 appuser && \
    adduser -D -u 1000 -G appuser appuser && \
    echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

# 复制应用文件
COPY app.sh /app/
COPY scripts/ /app/scripts/

# 转换 Windows 行结尾符为 Unix 格式
RUN dos2unix /app/app.sh && \
    dos2unix /app/scripts/*.sh && \
    dos2unix /app/scripts/*.py && \
    chmod +x /app/app.sh && \
    chmod +x /app/scripts/*.sh && \
    chmod +x /app/scripts/*.py

# 修改文件权限
RUN chown -R appuser:appuser /app

# 切换到非 root 用户
USER appuser

# 暴露端口（根据需要修改）
EXPOSE 8080

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:8080/health || exit 1

# 默认命令
CMD ["/app/app.sh"] 